#ifndef QUEUE_H
#define QUEUE_H

#include "../../lib/common.h"
#include "../../lib/linked_list.h"

typedef LinkedListNode Node;

typedef struct 
{
  Node *head;
  Node *tail;
  int size;
} Queue;

Queue *init_queue(void); // 初始化空队列
int get_length(Queue *queue); // 获取队列长度
bool is_empty(Queue *queue); // 判断是否是空队列
void push(Queue *queue, int value); // 入队，在队列末尾追加元素
int peek(Queue *queue); // 访问队首的值
int pop(Queue *queue); // 出队，从队首删除元素
void print_queue(Queue *queue); // 打印队列
void destory_queue(Queue *queue); // 销毁

#endif